The complexity of processing systems, which are often deployed remotely, are increasing. Consequently, firmware often needs to be updated to provide enhanced functionality and to correct problems (“bugs”) when executing the computer-executable instructions in the firmware. Wireless technology (e.g., RF wireless communications or wireless networking technology) is often used to update the firmware, in which a small portion of the firmware (typically referred as a boot loader) updates the firmware by communicating with another system. Under ideal conditions, the updating process may be straight-forward. However, communications over the wireless communications channel may incur transmission errors, thus resulting in an unsuccessful update.
Many types of devices include non-volatile memory that stores program instructions that are executed after power is applied or upon reset. These program instructions typically perform various initialization functions and then initiate loading and execution of other software. Typically, the initialization program instructions are referred to as firmware and are often stored in either ROM (read-only memory) or EPROM (electrically programmable read-only memory). However, using ROM or EPROM devices to store the firmware had several drawbacks. One such drawback is that to install new or different versions of firmware, there is the need for physical replacement of a ROM device or manipulation such as irradiating an EPROM device with ultraviolet light and then using an EPROM programmer to store new firmware on the EPROM device.
Electrically erasable programmable read only memory (EEPROM) devices are often used instead of ROM or EPROM devices to store firmware because of the drawbacks discussed above. New firmware may be installed without the need for physical replacement or manipulation. There may be drawbacks with this approach. First, the entire storage of an EEPROM may need to be rewritten to update the firmware. In other words, a portion of the EEPROM may not be written to specifically. Consequently, the firmware updating procedure may be vulnerable to power failures or other errors (e.g., software bugs) in the firmware itself. If the firmware has an error, it may render the device or computer system non-operational. Consequently, a physical replacement of the EEPROM device may be required if an error occurs in the firmware. Versions of EEPROM's are available where it is possible to update a portion of the EEPROM without updating the entire EEPROM. This type of EEPROM can be found in flash memory cards for digital cameras, among other devices, and is also used to store firmware for devices and computer systems.
When updating firmware in a processing system, the entire firmware is often replaced. Prior art methods for updating firmware in non-volatile memory may still include the drawbacks related to errors in the firmware (e.g., power failures, software bugs) interrupting the upgrade process and thus rendering the device inoperable.
Consequently, there is a real market need for the processing system to be able to recover from errors when updating firmware in order to maintain functionality of a processing system.